-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add option for HLS quality in user preferences #4118
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You'll also need to modify disable_proxy
to accept an hls
option, and the proxy logic to respect that (honestly, good luck with that, that code is a mess :c)
56bf592
to
5685e70
Compare
That should do the trick. On another note, now that there's a |
Livestreams have both DASH and HLS manifests, video.js's can't handle YouTube's live stream DASH (YouTube uses self-initialising segments, which are part of the DASH spec, but heavily discouraged by the DASH interoperability guidelines, as it's a lot less efficient, sending the init data along with every segment, than doing it once), which is why Invidious only uses HLS, but external services that use Invidious's proxy, might use the live stream DASH manifests (FreeTube soon-ish). |
Irrc Invidious treats the livestream parameter as a hls parameter and is used only to disable hls manifests. |
We consider a |
I believe it is the case for the other HLS urls. I'll keep the |
locales/en-US.json
Outdated
"video_quality_livestream_label": "Livestreams", | ||
"video_quality_hls_label": "HLS", | ||
"video_quality_dash_label": "DASH", | ||
"video_quality_hd720_label": "hd720", | ||
"video_quality_medium_label": "medium", | ||
"video_quality_small_label": "small" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
By default VideoJS makes everything lowercase. So despite the fact that some of these are capitalized it'd just show up as "livestream" or "hls" on the quality selector.
@syeopite is this PR intended to only work on iOS devices? When setting quality to HLS I'm only able to play back videos on an iPhone. Safari and all other browses on macOS just try to load indefinitely. |
That's weird... Maybe it's related to #4199? It definitely shouldn't be limited to just IOS. |
It could be something to do with the HLS streams returned by the iOS client, using MP4 files that contain vp9 video, which is possibly something that video.js doesn't support (For DASH and HLS, the player javascript has to extract the "raw" audio and video from the streams, so it's transmuxer needs to have support for the containers and codecs you want to use)? On iOS, HLS manifests are handled by the browser itself, so that's probably why it works fine there. |
0b0ec00
to
c0e007b
Compare
This pull request has been automatically marked as stale and will be closed in 30 days because it has not had recent activity and is much likely abandoned or outdated. If you think this pull request is still relevant and applicable, you just have to post a comment and it will be unmarked. |
c0e007b
to
595d299
Compare
It seems like #4439 fixes the issues with enabling the quality selector on HLS videos! Livestreams are still not supported however. |
What's the hold up on this PR? Invidious is unusable on iOS devices unless happy to watch potato quality.. |
Co-authored-by: Samantaz Fox <[email protected]>
Co-authored-by: Samantaz Fox <[email protected]>
Co-authored-by: Samantaz Fox <[email protected]>
595d299
to
122c859
Compare
When a client requests HLS streams, Invidious will first check the database to see if the cached video has any HLS streams. If not we request the IOS client and update the streamingData field with the now gotten HLS manifest data. Afterwards, we update the cached video in the database.
IOS requests are now cached |
Closes #3318
Closes #2236
If applicable, I'll like to claim the bounty for the latter issue.
This PR adds a new
HLS
quality option that forces the usage of the HLS manifest given by the IOS InnerTube client. This allows qualities of up to 1080p on IOS devices but it also introduces a couple problems: